Hi, Lu it seems like there is some build issue: ``` /usr/bin/ld: /tmp/cc1NV6qZ.ltrans2.ltrans.o: warning: relocation against `seen_eof_include_file' in read-only section `.text' /usr/bin/ld: /tmp/cc1NV6qZ.ltrans1.ltrans.o: in function `lang_add_wild': /builddir/build/BUILD/binutils-2.42.50/build-x86_64-redhat-linux/ld/../../ld/ldlang.c:8518:(.text+0xa108): undefined reference to `in_text_section_ordering_file' /usr/bin/ld: /builddir/build/BUILD/binutils-2.42.50/build-x86_64-redhat-linux/ld/../../ld/ldlang.c:8552:(.text+0xa3aa): undefined reference to `seen_eof_include_file' /usr/bin/ld: /builddir/build/BUILD/binutils-2.42.50/build-x86_64-redhat-linux/ld/../../ld/ldlang.c:8553:(.text+0xa3b8): undefined reference to `in_text_section_ordering_file' /usr/bin/ld: /builddir/build/BUILD/binutils-2.42.50/build-x86_64-redhat-linux/ld/../../ld/ldlang.c:8551:(.text+0xa48f): undefined reference to `in_text_section_ordering_file' /usr/bin/ld: /tmp/cc1NV6qZ.ltrans2.ltrans.o: in function `ldfile_open_command_file_1.lto_priv.0': /builddir/build/BUILD/binutils-2.42.50/build-x86_64-redhat-linux/ld/../../ld/ldfile.c:939:(.text+0x9fc2): undefined reference to `in_text_section_ordering_file' /usr/bin/ld: /builddir/build/BUILD/binutils-2.42.50/build-x86_64-redhat-linux/ld/../../ld/ldfile.c:965:(.text+0x9ff3): undefined reference to `in_text_section_ordering_file' /usr/bin/ld: /builddir/build/BUILD/binutils-2.42.50/build-x86_64-redhat-linux/ld/../../ld/ldfile.c:998:(.text+0xa0e7): undefined reference to `in_text_section_ordering_file' /usr/bin/ld: /builddir/build/BUILD/binutils-2.42.50/build-x86_64-redhat-linux/ld/../../ld/ldfile.c:995:(.text+0xa0f7): undefined reference to `seen_eof_include_file' /usr/bin/ld: warning: creating DT_TEXTREL in a PIE collect2: error: ld returned 1 exit status make[4]: *** [Makefile:1265: ld-new] Error 1 make[3]: *** [Makefile:1903: all-recursive] Error 1 make[2]: *** [Makefile:1092: all] Error 2 make[1]: *** [Makefile:8046: all-ld] Error 2 ``` test by binutils-2.42.50-6.fc41.src.rpm this is my repo https://mirrors.aliyun.com/fedora/development/rawhide/Everything/x86_64/os/ I have verified that the error reported is caused by these patches. On Mon, Apr 1, 2024 at 9:17 PM H.J. Lu wrote: > On Mon, Apr 1, 2024 at 6:13 AM Florian Weimer wrote: > > > > * abush wang: > > > > > This is test: > > > ``` > > > uint64_t getnsecs() { > > > uint32_t lo, hi; > > > __asm__ __volatile__ ( > > > "rdtsc" : "=a"(lo), "=d"(hi) > > > ); > > > return ((uint64_t)hi << 32) | lo; > > > } > > > > > > int main() { > > > const int num_iterations = 1; > > > uint64_t start, end, total_time = 0; > > > > > > start = getnsecs(); > > > for (int i = 0; i < num_iterations; i++) { > > > (void) lrand48(); > > > } > > > end = getnsecs(); > > > total_time += (end - start); > > > > > > printf("Average time for lrand48: %lu cycles\n", total_time / > num_iterations); > > > return 0; > > > } > > > ``` > > > before: > > > Average time for lrand48: 21418 cycles > > > > > > after: > > > Average time for lrand48: 9892 cycles > > > > Do you see this on x86-64? So this isn't a displacement range issue? > > > > It could be that this is a random performance change due to code > > alignment, and not actually caused by the direct call distance. > > > > I have a linker patch to control section layout: > > https://patchwork.sourceware.org/project/binutils/list/?series=29973 > > It can > > 1. Reduce gaps between text sections. > 2. Put hot text sections close to each other. > > If it can solve this issue, we should add this feature to ld. > > -- > H.J. >