Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a74728f
[ld64]: allow compilation without TAPI
grobian Dec 19, 2020
d7b590b
[ld64] unwinddump: include stdlib for exit(3)
grobian Dec 19, 2020
e503f39
[ld64] archive_file: fix compilation without LTO_SUPPORT
grobian Dec 19, 2020
cecfebf
[cctools, cmake] as: fix compilation on powerpc-apple-darwin9
grobian Dec 19, 2020
1efba18
[cctools] fix compilation then LTO_SUPPORTED is NO
grobian Dec 19, 2020
db910bf
[cctools] otool: fix duplicate symbol in {arm,i386}_disasm.c
grobian Dec 19, 2020
310a9c6
[cctools, cmake] cbtlibs: link against libstuff for various funcs
grobian Dec 20, 2020
d09b1ce
[ld64, cmake] build libprunetrie as static archive
grobian Dec 21, 2020
fead401
[ld64] drop redundant TAPI_SUPPORT guard
grobian Dec 26, 2020
102a254
[cctools] add missing THREAD_FULL_STATE64 struct definition
grobian Dec 28, 2020
979cb81
[tapilite] add TAPI emulation library
grobian Dec 28, 2020
1675582
[ld64, cmake] use normal cmake trickery to link against tapi
grobian Dec 28, 2020
04c33c6
[tapilite] bunch of fixes and changes
grobian Dec 29, 2020
908445b
[tapilite, cmake] explitly build static library
grobian Dec 29, 2020
5853ccf
[cctools] 949.0.1
grobian Dec 29, 2020
952557f
Revert "[cctools] add missing THREAD_FULL_STATE64 struct definition"
grobian Dec 29, 2020
e83ac12
[cctools] assorted fixes to allow compilation
grobian Dec 29, 2020
f97f34c
[cctools, cmake] reflect update in version number
grobian Dec 29, 2020
1755e70
[cctools] as: make some stuff configurable
grobian Dec 31, 2020
e672253
[ld64] fix compilation on arm64
grobian Jun 8, 2022
3127e33
[cctools] fix build on macOS monterey
grobian Jun 8, 2022
58967cf
[cctools] don't include objc-runtime.h in print_objc.c and print_bitc…
biergaizi Apr 24, 2023
86d7771
[cctools] fix ar(1) crash without argument, closes #7.
biergaizi Apr 25, 2023
de3eb17
Merge pull request #1 from biergaizi/darwin-xtools-2-2-4
grobian Apr 28, 2023
0d77d50
Merge pull request #2 from biergaizi/upstream
grobian May 29, 2023
37f0876
[ld64] mimic Apple's -v output for compatibility
grobian Jul 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,10 @@ else()
message(STATUS "*Top Level* NO LTO")
endif()

if(XTOOLS_TAPI_PATH AND
if(XTOOLS_USE_TAPILITE)
option(XTOOLS_TAPI_SUPPORT "Support TAPI in ld64." ON)
message(STATUS "*Top Level* WITH TAPIlite")
elseif(XTOOLS_TAPI_PATH AND
EXISTS ${XTOOLS_TAPI_PATH}/include/tapi AND
EXISTS ${XTOOLS_TAPI_PATH}/lib/libtapi.dylib)
configure_file(
Expand Down Expand Up @@ -173,6 +176,11 @@ if (NOT XTOOLS_HAS_MODERNXAR)
COPYONLY)
endif()

# build tapilite first, so ld64 can link against it
if(XTOOLS_USE_TAPILITE)
add_subdirectory(tapilite)
endif()

# Evaluate first so that we find out about libprunetrie.
if( EXISTS ${CMAKE_SOURCE_DIR}/ld64/CMakeLists.txt )
add_subdirectory(ld64)
Expand Down
2 changes: 1 addition & 1 deletion cctools/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

set(CCTOOLS_VERSION_NUM 895.0)
set(CCTOOLS_VERSION_NUM 949.0.1)

add_definitions(-DALLOW_64BIT_LEB_ON_32B_TARGET=1)

Expand Down
80 changes: 61 additions & 19 deletions cctools/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ RC_OS = macos
RC_CFLAGS =

INSTALLSRC_SUBDIRS = $(COMMON_SUBDIRS) $(SUBDIRS_32) ar include efitools \
libmacho
libmacho tests
COMMON_SUBDIRS = libstuff as gprof misc man cbtlibs otool
APPLE_SUBDIRS = ar
SUBDIRS_32 = ld
Expand Down Expand Up @@ -53,9 +53,11 @@ all clean: $(DSTROOT)
SYMROOT=$(SYMROOT)/$$i $@) || exit 1 ; \
done; \
SED_RC_CFLAGS=`echo "$(RC_CFLAGS)" | sed 's/-arch ppc64//' \
| sed 's/-arch x86_64//' | sed 's/-arch armv5//' \
| sed 's/-arch arm64//' | sed 's/-arch x86_64h//' \
| sed 's/-arch armv6//' | sed 's/-arch armv7[f,k,s]*//g'`; \
| sed 's/-arch x86_64h//' | sed 's/-arch x86_64//' \
| sed 's/-arch armv5//' | sed 's/-arch armv6//' \
| sed 's/-arch armv7[f,k,s]*//g' \
| sed 's/-arch arm64_32//' | sed 's/-arch arm64e//' \
| sed 's/-arch arm64//'`; \
EMPTY=`echo "$$SED_RC_CFLAGS" | sed 's/ //g' \
| sed 's/-pipe//'`; \
if [ "$$EMPTY"x != "x" ]; \
Expand Down Expand Up @@ -86,9 +88,11 @@ all clean: $(DSTROOT)
RAW_DSTROOT="$(RAW_DSTROOT)" $@) || exit 1 ; \
done; \
SED_RC_CFLAGS=`echo "$(RC_CFLAGS)" | sed 's/-arch ppc64//' \
| sed 's/-arch x86_64//' | sed 's/-arch armv5//' \
| sed 's/-arch arm64//' | sed 's/-arch x86_64h//' \
| sed 's/-arch armv6//' | sed 's/-arch armv7[f,k,s]*//g'`; \
| sed 's/-arch x86_64h//' | sed 's/-arch x86_64//' \
| sed 's/-arch armv5//' | sed 's/-arch armv6//' \
| sed 's/-arch armv7[f,k,s]*//g' \
| sed 's/-arch arm64_32//' | sed 's/-arch arm64e//' \
| sed 's/-arch arm64//'`; \
EMPTY=`echo "$$SED_RC_CFLAGS" | sed 's/ //g' \
| sed 's/-pipe//'`; \
if [ "$$EMPTY"x != "x" ]; \
Expand All @@ -108,8 +112,9 @@ all clean: $(DSTROOT)
install:
@if [ $(SRCROOT) ]; \
then \
projName=`basename $(SRCROOT) | \
sed 's/-[-0-9.]*//' | sed 's/\.cvs//'`; \
projName=`basename $(SRCROOT) | sed 's/Branch.*//' | \
sed 's/_PONDEROSA//' | sed 's/_Fall2018//' | \
sed 's/-[-0-9.]*//' | sed 's/\.cvs//'`; \
if [ "$$projName" = cctools ]; \
then \
target=install_tools; \
Expand Down Expand Up @@ -165,9 +170,11 @@ install_tools: installhdrs
SYMROOT=$(SYMROOT)/$$i install) || exit 1; \
done; \
SED_RC_CFLAGS=`echo "$(RC_CFLAGS)" | sed 's/-arch ppc64//' \
| sed 's/-arch x86_64//' | sed 's/-arch armv5//' \
| sed 's/-arch arm64//' | sed 's/-arch x86_64h//' \
| sed 's/-arch armv6//' | sed 's/-arch armv7[f,k,s]*//g'`; \
| sed 's/-arch x86_64h//' | sed 's/-arch x86_64//' \
| sed 's/-arch armv5//' | sed 's/-arch armv6//' \
| sed 's/-arch armv7[f,k,s]*//g' \
| sed 's/-arch arm64_32//' | sed 's/-arch arm64e//' \
| sed 's/-arch arm64//'`; \
EMPTY=`echo "$$SED_RC_CFLAGS" | sed 's/ //g' \
| sed 's/-pipe//'`; \
if [ "$$EMPTY"x != "x" ]; \
Expand Down Expand Up @@ -200,9 +207,11 @@ install_tools: installhdrs
install) || exit 1; \
done; \
SED_RC_CFLAGS=`echo "$(RC_CFLAGS)" | sed 's/-arch ppc64//' \
| sed 's/-arch x86_64//' | sed 's/-arch armv5//' \
| sed 's/-arch arm64//' | sed 's/-arch x86_64h//' \
| sed 's/-arch armv6//' | sed 's/-arch armv7[f,k,s]*//g'`; \
| sed 's/-arch x86_64h//' | sed 's/-arch x86_64//' \
| sed 's/-arch armv5//' | sed 's/-arch armv6//' \
| sed 's/-arch armv7[f,k,s]*//g' \
| sed 's/-arch arm64_32//' | sed 's/-arch arm64e//' \
| sed 's/-arch arm64//'`; \
EMPTY=`echo "$$SED_RC_CFLAGS" | sed 's/ //g' \
| sed 's/-pipe//'`; \
if [ "$$EMPTY"x != "x" ]; \
Expand Down Expand Up @@ -239,6 +248,8 @@ lib_ofiles lib_ofiles_install: installhdrs
then \
CWD=`pwd`; cd "$(DSTROOT)"; DSTROOT=`pwd`; cd "$$CWD"; \
SED_RC_CFLAGS=`echo "$(RC_CFLAGS)" | sed 's/-arch ppc64//' \
| sed 's/-arch arm64_32//' \
| sed 's/-arch arm64e//' \
| sed 's/-arch arm64//' \
| sed 's/-arch x86_64h//' \
| sed 's/-arch x86_64//'`; \
Expand Down Expand Up @@ -301,6 +312,8 @@ lib_ofiles lib_ofiles_install: installhdrs
else \
CWD=`pwd`; cd "$(DSTROOT)"; DSTROOT=`pwd`; cd "$$CWD"; \
SED_RC_CFLAGS=`echo "$(RC_CFLAGS)" | sed 's/-arch ppc64//' \
| sed 's/-arch arm64_32//' \
| sed 's/-arch arm64e//' \
| sed 's/-arch arm64//' \
| sed 's/-arch x86_64h//' \
| sed 's/-arch x86_64//'`; \
Expand Down Expand Up @@ -429,10 +442,14 @@ fromGASsrc:
installhdrs: $(DSTROOT)
@if [ $(SRCROOT) ]; \
then \
projName=`basename $(SRCROOT) | sed 's/-[0-9.]*//'`; \
if [ "$$projName" = cctools -a $(RC_OS) = macos ] && \
[ "$(RC_ProjectName)" != "cctools_ofiles_Sim" ] && \
[ "$(RC_FORCEHDRS)" != "YES" ]; \
projName=`basename $(SRCROOT) | sed 's/Branch.*//' | \
sed 's/_PONDEROSA//' | sed 's/_Fall2018//' | \
sed 's/-[-0-9.]*//' | sed 's/\.cvs//'`; \
rcName=`echo $(RC_ProjectName) | \
sed 's/\(cctools_ofiles\).*/\1/'`; \
if [ "$$projName" = cctools -a $(RC_OS) = macos ] && \
[ "$$rcName" != "cctools_ofiles" ] && \
[ "$(RC_FORCEHDRS)" != "YES" ]; \
then \
echo === cctools does not install headers for macos ===;\
else \
Expand All @@ -444,6 +461,28 @@ installhdrs: $(DSTROOT)
install) || exit 1; \
fi

installapi: $(DSTROOT)
@if [ $(SRCROOT) ]; \
then \
projName=`basename $(SRCROOT) | sed 's/Branch.*//' | \
sed 's/_PONDEROSA//' | sed 's/_Fall2018//' | \
sed 's/-[-0-9.]*//' | sed 's/\.cvs//'`; \
rcName=`echo $(RC_ProjectName) | \
sed 's/\(cctools_ofiles\).*/\1/'`; \
if [ "$$projName" = cctools -a $(RC_OS) = macos ] && \
[ "$$rcName" != "cctools_ofiles" ] && \
[ "$(RC_FORCEHDRS)" != "YES" ]; \
then \
echo === cctools does not installapi for macos ===;\
else \
(cd include; $(MAKE) DSTROOT=$(DSTROOT) \
RC_OS="$(RC_OS)" installapi) || exit 1; \
fi; \
else \
(cd include; $(MAKE) DSTROOT=$(DSTROOT) RC_OS=$(RC_OS) \
installapi) || exit 1; \
fi

$(DSTROOT):
$(MKDIRS) $@

Expand All @@ -455,3 +494,6 @@ SRCROOT:
echo Must define $@; \
exit 1; \
fi

noop:
mkdir -p $(DSTROOT)/AppleInternal
17 changes: 0 additions & 17 deletions cctools/PB.project

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, so, yes, this file is old and obsolete, but would it really harm anything just to leave it?

This file was deleted.

4 changes: 2 additions & 2 deletions cctools/ar/ar.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,12 @@ main(argc, argv)
run_ranlib = 1;

if (argc < 3) {
if(strcmp(argv[1], "--version") == 0){
if(argc >= 2 && strcmp(argv[1], "--version") == 0){
/* Implement a gnu-style --version to be friendly to GCC. */
fprintf(stdout, "xtools-%s ar %s\nBased on Apple Inc. %s\n",
xtools_version, package_version, apple_version);
exit(0);
} else if(strcmp(argv[1], "--help") == 0){
} else if(argc >= 2 && strcmp(argv[1], "--help") == 0){

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes were already included in #8 which has been merged; I wonder why they're still showing up as part of the diff here?

usage(0);
fprintf(stdout, "Please report bugs to %s\n", support_url);
exit(0);
Expand Down
23 changes: 14 additions & 9 deletions cctools/ar/archive.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,8 +231,9 @@ get_arobj(fd)
int fd;
{
struct ar_hdr *hdr;
int len, nr;
size_t len, nr;
char *p, buf[20];
long longval;

nr = read(fd, hb, sizeof(HDR));
if (nr != sizeof(HDR)) {
Expand All @@ -252,8 +253,10 @@ get_arobj(fd)
#define OCTAL 8

AR_ATOI(hdr->ar_date, chdr.date, sizeof(hdr->ar_date), DECIMAL);
AR_ATOI(hdr->ar_uid, chdr.uid, sizeof(hdr->ar_uid), DECIMAL);
AR_ATOI(hdr->ar_gid, chdr.gid, sizeof(hdr->ar_gid), DECIMAL);
AR_ATOI(hdr->ar_uid, longval, sizeof(hdr->ar_uid), DECIMAL);
chdr.uid = (uid_t)longval;
AR_ATOI(hdr->ar_gid, longval, sizeof(hdr->ar_gid), DECIMAL);
chdr.gid = (gid_t)longval;
AR_ATOI(hdr->ar_mode, chdr.mode, sizeof(hdr->ar_mode), OCTAL);
AR_ATOI(hdr->ar_size, chdr.size, sizeof(hdr->ar_size), DECIMAL);

Expand Down Expand Up @@ -288,7 +291,7 @@ get_arobj(fd)
return (1);
}

static int already_written;
static size_t already_written;

/*
* put_arobj --
Expand All @@ -299,7 +302,7 @@ put_arobj(cfp, sb)
CF *cfp;
struct stat *sb;
{
unsigned int lname;
size_t lname;
char *name;
struct ar_hdr *hdr;
off_t size;
Expand Down Expand Up @@ -343,7 +346,8 @@ put_arobj(cfp, sb)
sb->st_mode, sb->st_size, ARFMAG);
lname = 0;
} else if (lname > sizeof(hdr->ar_name) || strchr(name, ' '))
(void)sprintf(hb, HDR1, AR_EFMT1, (lname + 3) & ~3,
(void)sprintf(hb, HDR1, AR_EFMT1,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it'd be worthwhile to change sprintf() to snprintf() while you're here?

(int)((lname + 3) & ~3),
(long int)tv_sec,
(unsigned int)(u_short)sb->st_uid,
(unsigned int)(u_short)sb->st_gid,
Expand Down Expand Up @@ -371,13 +375,13 @@ put_arobj(cfp, sb)
* which is required for object files in archives.
*/
if (lname) {
if (write(cfp->wfd, name, lname) != (int)lname)
if (write(cfp->wfd, name, lname) != (ssize_t)lname)
error(cfp->wname);
already_written = lname;
if ((lname % 4) != 0) {
static char pad[3] = "\0\0\0";
if (write(cfp->wfd, pad, 4-(lname%4)) !=
(int)(4-(lname%4)))
(ssize_t)(4-(lname%4)))
error(cfp->wname);
already_written += 4 - (lname % 4);
}
Expand Down Expand Up @@ -407,7 +411,8 @@ copy_ar(cfp, size)
{
static char pad = '\n';
off_t sz;
int from, nr, nw, off, to;
ssize_t nr, nw;
int from, off, to;
char buf[8*1024];

nr = 0;
Expand Down
22 changes: 16 additions & 6 deletions cctools/as/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,24 @@ if(XTOOLS_C_HAS_WNODEPRECATED_FLAG)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated")
endif()

if (XTOOLS_AS_USE_CLANG)
add_definitions(-DXTOOLS_AS_USE_CLANG)
endif()
if (XTOOLS_AS_CLANG_USE_HOST)
add_definitions(-DXTOOLS_AS_CLANG_USE_HOST)
endif()
if (XTOOLS_AS_SUBDIR)
add_definitions(-DXTOOLS_AS_SUBDIR="${XTOOLS_AS_SUBDIR}")
endif()

add_executable(as-driver driver.c)
set_target_properties(as-driver PROPERTIES COMPILE_FLAGS "-Di486 -Di586 -Di686")
set_target_properties(as-driver PROPERTIES COMPILE_FLAGS "-Di486 -Di586 -Di686 -UPPC")
target_link_libraries(as-driver stuff)
set_target_properties(as-driver PROPERTIES OUTPUT_NAME as)
install(TARGETS as-driver DESTINATION bin )

add_executable(i386-as ${X86_SRCS})
set_target_properties(i386-as PROPERTIES COMPILE_FLAGS "-DI386 -Di486 -Di586 -Di686")
set_target_properties(i386-as PROPERTIES COMPILE_FLAGS "-DI386 -Di486 -Di586 -Di686 -UPPC")
set_target_properties(i386-as PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/i386)
set_target_properties(i386-as PROPERTIES OUTPUT_NAME as)
target_link_libraries(i386-as stuff)
Expand All @@ -59,13 +69,13 @@ install(TARGETS i386-as DESTINATION bin/i386)

if(BUILD_TESTING)
add_executable(test-x86 i386-check.c)
set_target_properties(test-x86 PROPERTIES COMPILE_FLAGS "-DI386 -Di486 -Di586 -Di686")
set_target_properties(test-x86 PROPERTIES COMPILE_FLAGS "-DI386 -Di486 -Di586 -Di686 -UPPC")
set_target_properties(test-x86 PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tests)
add_test(NAME check-x86-as COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/check-as $<TARGET_FILE:test-x86> i386 $<TARGET_FILE:as-driver>)
endif()

add_executable(x8664-as ${X86_SRCS})
set_target_properties(x8664-as PROPERTIES COMPILE_FLAGS "-DI386 -Di486 -Di586 -Di686 -DARCH64")
set_target_properties(x8664-as PROPERTIES COMPILE_FLAGS "-DI386 -Di486 -Di586 -Di686 -DARCH64 -UPPC")
set_target_properties(x8664-as PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/x86_64)
set_target_properties(x8664-as PROPERTIES OUTPUT_NAME as)
target_link_libraries(x8664-as stuff)
Expand All @@ -76,7 +86,7 @@ install(TARGETS x8664-as DESTINATION bin/x86_64)

if(BUILD_TESTING)
add_executable(test-x86_64 i386-check.c)
set_target_properties(test-x86_64 PROPERTIES COMPILE_FLAGS "-DI386 -Di486 -Di586 -Di686 -DARCH64")
set_target_properties(test-x86_64 PROPERTIES COMPILE_FLAGS "-DI386 -Di486 -Di586 -Di686 -DARCH64 -UPPC")
set_target_properties(test-x86_64 PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tests)
add_test(NAME check-x86_86-as COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/check-as $<TARGET_FILE:test-x86_64> x86_64 $<TARGET_FILE:as-driver>)
endif()
Expand Down Expand Up @@ -109,7 +119,7 @@ endif()
install(TARGETS ppc64-as DESTINATION bin/ppc64)

add_executable(arm-as ${ARM_SRCS})
set_target_properties(arm-as PROPERTIES COMPILE_FLAGS "-DARM")
set_target_properties(arm-as PROPERTIES COMPILE_FLAGS "-DARM -UPPC")
set_target_properties(arm-as PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/arm)
set_target_properties(arm-as PROPERTIES OUTPUT_NAME as)
target_link_libraries(arm-as stuff)
Expand Down
2 changes: 1 addition & 1 deletion cctools/as/app.c
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ FILE *fp)
}

int
do_scrub_next_char_from_string()
do_scrub_next_char_from_string(void)
{
/* State 0: beginning of normal line
1: After first whitespace on normal line (flush more white)
Expand Down
2 changes: 1 addition & 1 deletion cctools/as/app.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ extern void do_scrub_begin(
void);
extern int do_scrub_next_char(
FILE *fp);
extern int do_scrub_next_char_from_string();
extern int do_scrub_next_char_from_string(void);

/*
* typedefs and routines to save scrub context so .include can make recursive
Expand Down
Loading