mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-16 12:06:09 +00:00

On Darwin, the binary's symbol table points to debug info in object files -- potentially object files within a static library. Such a library may have multiple entries with the same name, distinguished only by timestamp. The code was already _attempting_ to handle this case (see the code in ObjectContainerBSDArchive::Archive::FindObject which disambiguates via timestamp). But, unfortunately, while the timestamp was taken into account on the _first_ lookup, the result was then cached in a map keyed only off of the path. Added the timestamp to the cache, and added a test case. Differential Revision: https://reviews.llvm.org/D47660 llvm-svn: 333813
23 lines
590 B
Makefile
23 lines
590 B
Makefile
LEVEL = ../../make
|
|
|
|
C_SOURCES := main.c
|
|
|
|
# Make an archive that has two object files with the same name, but
|
|
# different timestamps. Do it all in one rule so that the timestamps
|
|
# can be controlled without confusing Make.
|
|
libfoo.a: a.c sub1/a.c
|
|
$(CC) $(CFLAGS) -c $(<D)/a.c -o a.o
|
|
mkdir -p sub1
|
|
$(CC) $(CFLAGS) -c $(<D)/sub1/a.c -o sub1/a.o
|
|
touch -t '198001010000.00' a.o
|
|
touch -t '198001010000.01' sub1/a.o
|
|
$(AR) $(ARFLAGS) $@ a.o sub1/a.o
|
|
rm a.o sub1/a.o
|
|
|
|
include $(LEVEL)/Makefile.rules
|
|
|
|
# Needs to come after include
|
|
OBJECTS += libfoo.a
|
|
$(EXE) : libfoo.a
|
|
.DEFAULT_GOAL := $(EXE)
|