c – Does necessary content of the same header will be duplicated in produced executable?

I use gcc. We know the cpp expands all macros definitions and include statements and passes the result to the actual compiler to create an executable file. I tested the result of cpp and see that some parts of header which are necessary, are included in output of cpp for each source file.

But I want to know if in a project I have a header that is included in multiple source files, then does the related content to that header will be duplicated multiple times in produced executable? Or there will be multiple shortcuts to them? If there will be shortcuts, I want to know why cpp replaces shortcuts of source files with more code and pass the result to cc1?

For example in a header, I have a function with name kids

int kids(){
  return 1;
}

and call it in test.c source file. The cpp put the definition of kids in its output. But in compiled file (test.s which is the result of cc -S test.c), I only see call kids which is replaced instead of function definition. I call that a shortcut.I want to know what will happen for that function and its calls in executable?

Edit:

The assembly off test.c is:

0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000010 0001 003e 0001 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0400 0000 0000 0000
0000030 0000 0000 0040 0000 0000 0040 000e 000d
0000040 0ff3 fa1e 4855 e589 01b8 0000 5d00 f3c3
0000050 1e0f 55fa 8948 48e5 3d8d 0000 0000 00e8
0000060 0000 b800 0000 0000 00e8 0000 8900 48c6
0000070 3d8d 0000 0000 00b8 0000 e800 0000 0000
0000080 00b8 0000 5d00 43c3 5220 636f 736b 2b20
0000090 4120 696c 0021 6425 0000 4347 3a43 2820
00000a0 6255 6e75 7574 3920 342e 302e 312d 6275
00000b0 6e75 7574 7e31 3032 302e 2e34 2931 3920
00000c0 342e 302e 0000 0000 0004 0000 0010 0000
00000d0 0005 0000 4e47 0055 0002 c000 0004 0000
00000e0 0003 0000 0000 0000 0014 0000 0000 0000
00000f0 7a01 0052 7801 0110 0c1b 0807 0190 0000
0000100 001c 0000 001c 0000 0000 0000 000f 0000
0000110 4500 100e 0286 0d43 4606 070c 0008 0000
0000120 001c 0000 003c 0000 0000 0000 0038 0000
0000130 4500 100e 0286 0d43 6f06 070c 0008 0000
0000140 0000 0000 0000 0000 0000 0000 0000 0000
0000150 0000 0000 0000 0000 0001 0000 0004 fff1
0000160 0000 0000 0000 0000 0000 0000 0000 0000
0000170 0000 0000 0003 0001 0000 0000 0000 0000
0000180 0000 0000 0000 0000 0000 0000 0003 0003
0000190 0000 0000 0000 0000 0000 0000 0000 0000
00001a0 0000 0000 0003 0004 0000 0000 0000 0000
00001b0 0000 0000 0000 0000 0000 0000 0003 0005
00001c0 0000 0000 0000 0000 0000 0000 0000 0000
00001d0 0000 0000 0003 0007 0000 0000 0000 0000
00001e0 0000 0000 0000 0000 0000 0000 0003 0008
00001f0 0000 0000 0000 0000 0000 0000 0000 0000
0000200 0000 0000 0003 0009 0000 0000 0000 0000
0000210 0000 0000 0000 0000 0000 0000 0003 0006
0000220 0000 0000 0000 0000 0000 0000 0000 0000
0000230 0008 0000 0012 0001 0000 0000 0000 0000
0000240 000f 0000 0000 0000 000d 0000 0012 0001
0000250 000f 0000 0000 0000 0038 0000 0000 0000
0000260 0012 0000 0010 0000 0000 0000 0000 0000
0000270 0000 0000 0000 0000 0028 0000 0010 0000
0000280 0000 0000 0000 0000 0000 0000 0000 0000
0000290 002d 0000 0010 0000 0000 0000 0000 0000
00002a0 0000 0000 0000 0000 7400 7365 2e74 0063
00002b0 696b 7364 6d00 6961 006e 475f 4f4c 4142
00002c0 5f4c 464f 5346 5445 545f 4241 454c 005f
00002d0 7570 7374 7000 6972 746e 0066 0000 0000
00002e0 001a 0000 0000 0000 0002 0000 0005 0000
00002f0 fffc ffff ffff ffff 001f 0000 0000 0000
0000300 0004 0000 000d 0000 fffc ffff ffff ffff
0000310 0029 0000 0000 0000 0004 0000 000a 0000
0000320 fffc ffff ffff ffff 0032 0000 0000 0000
0000330 0002 0000 0005 0000 000b 0000 0000 0000
0000340 003c 0000 0000 0000 0004 0000 000e 0000
0000350 fffc ffff ffff ffff 0020 0000 0000 0000
0000360 0002 0000 0002 0000 0000 0000 0000 0000
0000370 0040 0000 0000 0000 0002 0000 0002 0000
0000380 000f 0000 0000 0000 2e00 7973 746d 6261
0000390 2e00 7473 7472 6261 2e00 6873 7473 7472
00003a0 6261 2e00 6572 616c 742e 7865 0074 642e
00003b0 7461 0061 622e 7373 2e00 6f72 6164 6174
00003c0 2e00 6f63 6d6d 6e65 0074 6e2e 746f 2e65
00003d0 4e47 2d55 7473 6361 006b 6e2e 746f 2e65
00003e0 6e67 2e75 7270 706f 7265 7974 2e00 6572
00003f0 616c 652e 5f68 7266 6d61 0065 0000 0000
0000400 0000 0000 0000 0000 0000 0000 0000 0000
*
0000440 0020 0000 0001 0000 0006 0000 0000 0000
0000450 0000 0000 0000 0000 0040 0000 0000 0000
0000460 0047 0000 0000 0000 0000 0000 0000 0000
0000470 0001 0000 0000 0000 0000 0000 0000 0000
0000480 001b 0000 0004 0000 0040 0000 0000 0000
0000490 0000 0000 0000 0000 02e0 0000 0000 0000
00004a0 0078 0000 0000 0000 000b 0000 0001 0000
00004b0 0008 0000 0000 0000 0018 0000 0000 0000
00004c0 0026 0000 0001 0000 0003 0000 0000 0000
00004d0 0000 0000 0000 0000 0087 0000 0000 0000
00004e0 0000 0000 0000 0000 0000 0000 0000 0000
00004f0 0001 0000 0000 0000 0000 0000 0000 0000
0000500 002c 0000 0008 0000 0003 0000 0000 0000
0000510 0000 0000 0000 0000 0087 0000 0000 0000
0000520 0000 0000 0000 0000 0000 0000 0000 0000
0000530 0001 0000 0000 0000 0000 0000 0000 0000
0000540 0031 0000 0001 0000 0002 0000 0000 0000
0000550 0000 0000 0000 0000 0087 0000 0000 0000
0000560 0012 0000 0000 0000 0000 0000 0000 0000
0000570 0001 0000 0000 0000 0000 0000 0000 0000
0000580 0039 0000 0001 0000 0030 0000 0000 0000
0000590 0000 0000 0000 0000 0099 0000 0000 0000
00005a0 002c 0000 0000 0000 0000 0000 0000 0000
00005b0 0001 0000 0000 0000 0001 0000 0000 0000
00005c0 0042 0000 0001 0000 0000 0000 0000 0000
00005d0 0000 0000 0000 0000 00c5 0000 0000 0000
00005e0 0000 0000 0000 0000 0000 0000 0000 0000
00005f0 0001 0000 0000 0000 0000 0000 0000 0000
0000600 0052 0000 0007 0000 0002 0000 0000 0000
0000610 0000 0000 0000 0000 00c8 0000 0000 0000
0000620 0020 0000 0000 0000 0000 0000 0000 0000
0000630 0008 0000 0000 0000 0000 0000 0000 0000
0000640 006a 0000 0001 0000 0002 0000 0000 0000
0000650 0000 0000 0000 0000 00e8 0000 0000 0000
0000660 0058 0000 0000 0000 0000 0000 0000 0000
0000670 0008 0000 0000 0000 0000 0000 0000 0000
0000680 0065 0000 0004 0000 0040 0000 0000 0000
0000690 0000 0000 0000 0000 0358 0000 0000 0000
00006a0 0030 0000 0000 0000 000b 0000 0009 0000
00006b0 0008 0000 0000 0000 0018 0000 0000 0000
00006c0 0001 0000 0002 0000 0000 0000 0000 0000
00006d0 0000 0000 0000 0000 0140 0000 0000 0000
00006e0 0168 0000 0000 0000 000c 0000 000a 0000
00006f0 0008 0000 0000 0000 0018 0000 0000 0000
0000700 0009 0000 0003 0000 0000 0000 0000 0000
0000710 0000 0000 0000 0000 02a8 0000 0000 0000
0000720 0034 0000 0000 0000 0000 0000 0000 0000
0000730 0001 0000 0000 0000 0000 0000 0000 0000
0000740 0011 0000 0003 0000 0000 0000 0000 0000
0000750 0000 0000 0000 0000 0388 0000 0000 0000
0000760 0074 0000 0000 0000 0000 0000 0000 0000
0000770 0001 0000 0000 0000 0000 0000 0000 0000
0000780

Leave a Comment