AIXTOOLS, IBM AIX and POWER Portal
AIX => AIXTOOLS => Topic started by: Michael on December 07, 2015, 04:19:02 PM
-
When building on AIX I got the message:
ld: 0711-317 ERROR: Undefined symbol: .__register_frame_info_table
ld: 0711-317 ERROR: Undefined symbol: .__deregister_frame_info
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
collect2: error: ld returned 8 exit status
-bnoquiet does not reveal much more in this case: -but maybe just enough...
(ld): setopt 64
(ld): halt 4
(ld): setopt r/o->w
(ld): setopt nodelcsect
(ld): setfflag 4
(ld): savename libR.so
(ld): filelist 255 3
(ld): setopt noprogram
(ld): noentry
NOENTRY: There is no entry point.
(ld): i CommandLineArgs.o
(ld): i /tmp//ccObHQPV.o
(ld): i Rdynload.o
... lots and lots of additional .o files
(ld): i ../unix/system.o
(ld): i ../extra/zlib/libz.a
(ld): i ../extra/bzip2/libbz2.a
(ld): i ../extra/pcre/libpcre.a
(ld): i ../extra/tre/libtre.a
(ld): i ../extra/xz/liblzma.a
(ld): lib /opt/lib/libgfortran.a
(ld): lib /usr/lib/libm.a
(ld): i /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/ppc64/libgcc.a
(ld): i /opt/lib/libintl.a
(ld): i /opt/lib/libiconv.a
(ld): lib /usr/lib/libpthread.a
(ld): lib /usr/lib/libc.a
(ld): lib /usr/lib/librt.a
(ld): lib /usr/lib/libdl.a
(ld): lib /opt/lib/libgcc_s.a
LIBRARY: Shared object /opt/lib/libintl.a[libintl.so.8]: 58 symbols imported.
LIBRARY: Shared object /opt/lib/libiconv.a[libiconv.so.2]: 13 symbols imported.
LIBRARY: Shared object libpthread.a[shr_xpg5_64.o]: 332 symbols imported.
LIBRARY: Shared object libc.a[shr_64.o]: 2668 symbols imported.
LIBRARY: Shared object libc.a[posix_aio_64.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio_64.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse_64.o]: 5 symbols imported.
LIBRARY: Shared object libc.a[dl_64.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty_64.o]: 1 symbols imported.
LIBRARY: Shared object librt.a[posix_aio_64.o]: 7 symbols imported.
LIBRARY: Shared object libdl.a[shr_64.o]: 4 symbols imported.
FILELIST: Number of previously inserted files processed: 255
(ld): exports ../../etc/R.exp
EXPORTS: Symbols exported: 1903
(ld): exports /tmp//ccD159WP.x
EXPORTS: Symbols exported: 0
(ld): initfini _GLOBAL__FI_libR_so _GLOBAL__FD_libR_so
(ld): resolve
RESOLVE: 6457 of 17071 symbols were kept.
(ld): addgl /usr/lib/glink64.o
ADDGL: Glink code added for 203 symbols.
(ld): er full
ld: 0711-318 ERROR: Undefined symbols were found.
The following symbols are in error:
Symbol Inpndx TY CL Source-File(Object-File) OR Import-File{Shared-object}
RLD: Address Section Rld-type Referencing Symbol
----------------------------------------------------------------------------------------------
.__register_frame_info_table [14] ER PR /tmp//ccZBadC1.c(/tmp//ccObHQPV.o)
0000001c .text R_RBR [20] <.reg_frame>
.__deregister_frame_info [16] ER PR /tmp//ccZBadC1.c(/tmp//ccObHQPV.o)
0000006c .text R_RBR [22] <.dereg_frame>
ER: The return code is 8.
ld: 0711-317 ERROR: Undefined symbol: .__register_frame_info_table
ld: 0711-317 ERROR: Undefined symbol: .__deregister_frame_info
collect2: error: ld returned 8 exit status
* key here - I think - is that I am linking in 64-bit mode (I am guessing that is what "setopt 64" is 'reminding me)
* the files requesting the missing symbols are coming from the compiler itself (two files in /tmp)
Searching for the symbols in 32-bit mode shows:
root@x065:[/data/prj/cran/64/R/src/main]nm -X32 -AC /opt/lib/*.a | grep __register_frame_info_table
/opt/lib/libgcc_s.a[shr.o]: !__register_frame_info_table:F-11 - 0
/opt/lib/libgcc_s.a[shr.o]: .__register_frame_info_table T 268465580 112
/opt/lib/libgcc_s.a[shr.o]: .__register_frame_info_table_bases T 268465468 112
/opt/lib/libgcc_s.a[shr.o]: __register_frame_info_table D 536875268
/opt/lib/libgcc_s.a[shr.o]: __register_frame_info_table d 536875268 12
/opt/lib/libgcc_s.a[shr.o]: __register_frame_info_table_bases D 536876744
/opt/lib/libgcc_s.a[shr.o]: __register_frame_info_table_bases d 536876744 12
/opt/lib/libstdc++.a[libstdc++.so.6]: .__register_frame_info_table T 269101132
/opt/lib/libstdc++.a[libstdc++.so.6]: .__register_frame_info_table t 269101132 40
/opt/lib/libstdc++.a[libstdc++.so.6]: __register_frame_info_table U -
/opt/lib/libstdc++.a[libstdc++.so.6]: __register_frame_info_table d 537080272 4
Searching for the symbols in 64-bit mode shows:
nm -X64 -AC /opt/lib/*.a | grep __register_frame_info_table
More to the point - there is no 64-bit run-time linkage for shared libraries (more to follow I guess), because:
root@x065:[/data/prj/cran/64/R/src/main]ls -l /opt/lib/libgc*
-rw-r--r-- 1 root system 919830 Apr 16 2015 /opt/lib/libgcc_s.a
root@x065:[/data/prj/cran/64/R/src/main]nm -X64 -AC /opt/lib/libgc*.a | wc -l
0
-
My basic suspicion is correct - it is not finding the 64-bit objects. When I add a -L directive to search (first) in a directory with 64-bit members (in this case -L /opt/lib/ppc64) the messages go away.
Now I just have to figure out why the ./configure script was not setting up the correct directory (directories).