History

macos: section syms, strtab, runtime

uncovered by the backtrace/boundcheck tests: * handle STT_SECTION symbols * call tcc_add_runtime (to get the bcheck.o/bt-exe.o files added) * add .stab strtab into segments (we should probably add all stab syms to the output LC_SYMTAB eventually, but right now TCC uses 32 bit stabs, while mach-o uses 32/64bit stabs

Michael Matz committed 6 years ago

Commit 0b3c8361 parent 91cb4132 files · +5 −1Browse files

Unified · Split

2 files
  1. tccelf.c +2 −0
  2. tccmacho.c +3 −1
tccelf.c+2−0
@@ -1459,9 +1459,11 @@ ST_FUNC void tcc_add_runtime(TCCState *s1) · 1458 unmodified lines
14591459 }
14601460 #endif
14611461 tcc_add_support(s1, TCC_LIBTCC1);
1462+#ifndef TCC_TARGET_MACHO
14621463 /* add crt end if not memory output */
14631464 if (s1->output_type != TCC_OUTPUT_MEMORY)
14641465 tcc_add_crt(s1, "crtn.o");
1466+#endif
14651467 }
14661468 }
14671469 #endif
tccmacho.c+3−1
@@ -419,6 +419,7 @@ static void convert_symbol(TCCState *s1, struct macho *mo, struct nlist_64 *pn) · 418 unmodified lines
419419 case STT_NOTYPE:
420420 case STT_OBJECT:
421421 case STT_FUNC:
422+ case STT_SECTION:
422423 n.n_type = 0xe; /* default type is N_SECT */
423424 break;
424425 case STT_FILE:
@@ -609,7 +610,7 @@ static void collect_sections(TCCState *s1, struct macho *mo) · 184 unmodified lines
609610 case SHT_FINI_ARRAY: sk = sk_fini; break;
610611 case SHT_NOBITS: sk = sk_bss; break;
611612 case SHT_SYMTAB: sk = sk_discard; break;
612− case SHT_STRTAB: sk = sk_discard; break;
613+ case SHT_STRTAB: sk = s == stabstr_section ? sk_ro_data : sk_discard; break;
613614 case SHT_RELX: sk = sk_discard; break;
614615 case SHT_LINKEDIT: sk = sk_linkedit; break;
615616 case SHT_PROGBITS:
@@ -809,6 +810,7 @@ ST_FUNC int macho_output_file(TCCState *s1, const char *filename) · 193 unmodified lines
809810 if (s1->verbose)
810811 printf("<- %s\n", filename);
811812
813+ tcc_add_runtime(s1);
812814 resolve_common_syms(s1);
813815 create_symtab(s1, &mo);
814816 check_relocs(s1, &mo);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t