On Thu, 8 Jan 2015, Steve Ellcey wrote: > So I set these macros and SPECs: > # m32 and be are defaults > MULTILIB_OPTIONS = m64 mel # In makefile fragment > MULTILIB_DIRNAMES = 64 el # In makefile fragment > MULTILIB_OSDIRNAMES = m64=../lib64 # In makefile fragment
In my experience, for such cases it's best to list all multilibs explicitly in MULTILIB_OSDIRNAMES, and then to specify STARTFILE_PREFIX_SPEC as well along the lines of: #define STARTFILE_PREFIX_SPEC \ "%{mabi=32: /usr/local/lib/ /lib/ /usr/lib/} \ %{mabi=n32: /usr/local/lib32/ /lib32/ /usr/lib32/} \ %{mabi=64: /usr/local/lib64/ /lib64/ /usr/lib64/}" MULTILIB_OSDIRNAMES provides directory names used in two ways: relative to $target/lib/ in the GCC installation, and relative to lib/ and usr/lib/ in a sysroot. For the latter, we want names such as plain ../lib64, but these cannot be used outside the sysroot because different multilibs would be mapped to the same directory. Directories are searched both with and without the multilib suffix, so it suffices if the directory without the suffix is correct within the sysroot while the directory with the suffix doesn't exist. STARTFILE_PREFIX_SPEC is used to ensure that a correct unsuffixed directory is searched (instead of just lib/, usr/lib/ and those with the full name from MULTILIB_OSDIRNAMES appended) within the sysroot. > But when it looks for libgcc_s.so or libstdc++.so it is searching: > > <install-dir>/<target-name>/lib # 32 bits > <install_dir>/<target-name>/lib/../lib64 # 64 bits > > It does not take into account SYSROOT_SUFFIX_SPEC. In fact when I > do my build with this setup the little-endian libgcc_s.so files wind > up overwriting the big-endian libgcc_s.so files so two of my > libgcc_s.so files are completely missing from the install area. GCC never installs anything inside the sysroot (it could be a read-only mount of the target's root filesystem, for example). Listing all multilibs explicitly (multilib=dir or multilib=!dir) in MULTILIB_OSDIRNAMES allows you to ensure they don't overwrite each other. -- Joseph S. Myers jos...@codesourcery.com