| @@ -1431,10 +1431,14 @@ ST_FUNC void tcc_add_runtime(TCCState *s1) · 1430 unmodified lines |
| 1431 | 1431 | #endif |
| 1432 | 1432 | if (strlen(TCC_LIBTCC1) > 0) |
| 1433 | 1433 | tcc_add_support(s1, TCC_LIBTCC1); |
| 1434 | | −#if defined(__OpenBSD__) |
| 1434 | +#if defined(__OpenBSD__) || defined(__FreeBSD__) |
| 1435 | 1435 | /* add crt end if not memory output */ |
| 1436 | | − if (s1->output_type != TCC_OUTPUT_MEMORY) |
| 1436 | + if (s1->output_type != TCC_OUTPUT_MEMORY) { |
| 1437 | 1437 | tcc_add_crt(s1, "crtend.o"); |
| 1438 | +#if defined(__FreeBSD__) |
| 1439 | + tcc_add_crt(s1, "crtn.o"); |
| 1440 | +#endif |
| 1441 | + } |
| 1438 | 1442 | #elif !defined(TCC_TARGET_MACHO) |
| 1439 | 1443 | /* add crt end if not memory output */ |
| 1440 | 1444 | if (s1->output_type != TCC_OUTPUT_MEMORY) |
| @@ -2066,7 +2070,7 @@ static void fill_dynamic(TCCState *s1, struct dyn_inf *dyninf) · 625 unmodified lines |
| 2066 | 2070 | put_dt(dynamic, DT_RELA, dyninf->rel_addr); |
| 2067 | 2071 | put_dt(dynamic, DT_RELASZ, dyninf->rel_size); |
| 2068 | 2072 | put_dt(dynamic, DT_RELAENT, sizeof(ElfW_Rel)); |
| 2069 | | −#ifdef __OpenBSD__ |
| 2073 | +#if defined(__OpenBSD__) || defined(__FreeBSD__) |
| 2070 | 2074 | put_dt(dynamic, DT_PLTGOT, s1->got->sh_addr); |
| 2071 | 2075 | put_dt(dynamic, DT_PLTRELSZ, dyninf->rel_size); |
| 2072 | 2076 | put_dt(dynamic, DT_JMPREL, dyninf->rel_addr); |
| @@ -2399,7 +2403,7 @@ static void create_arm_attribute_section(TCCState *s1) · 326 unmodified lines |
| 2399 | 2403 | } |
| 2400 | 2404 | #endif |
| 2401 | 2405 | |
| 2402 | | −#ifdef __OpenBSD__ |
| 2406 | +#if defined(__OpenBSD__) |
| 2403 | 2407 | static Section *create_openbsd_note_section(TCCState *s1) |
| 2404 | 2408 | { |
| 2405 | 2409 | Section *s = find_section (s1, ".note.openbsd.ident"); |
| @@ -2757,7 +2761,7 @@ ST_FUNC int tcc_load_object_file(TCCState *s1, · 351 unmodified lines |
| 2757 | 2761 | #ifdef TCC_ARM_EABI |
| 2758 | 2762 | sh->sh_type != SHT_ARM_EXIDX && |
| 2759 | 2763 | #endif |
| 2760 | | −#ifdef __OpenBSD__ |
| 2764 | +#if defined(__OpenBSD__) || defined(__FreeBSD__) |
| 2761 | 2765 | sh->sh_type != SHT_X86_64_UNWIND && |
| 2762 | 2766 | sh->sh_type != SHT_NOTE && |
| 2763 | 2767 | #endif |