aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO/Atom.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2024-02-03 16:57:15 +0100
committerJakub Konka <kubkon@jakubkonka.com>2024-02-03 16:57:15 +0100
commit7641561f2d538cdccf452bc801a1bea88b91fed7 (patch)
tree8c9515c442dc9d76a31be1fbb0bc36276203e88d /src/link/MachO/Atom.zig
parent1ad545c97bbfed8e29f0312a794731638377705a (diff)
downloadzig-7641561f2d538cdccf452bc801a1bea88b91fed7.tar.gz
zig-7641561f2d538cdccf452bc801a1bea88b91fed7.zip
macho: refactor section/segment handle tracking logic
Diffstat (limited to 'src/link/MachO/Atom.zig')
-rw-r--r--src/link/MachO/Atom.zig24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/link/MachO/Atom.zig b/src/link/MachO/Atom.zig
index a38c60140d..309a246969 100644
--- a/src/link/MachO/Atom.zig
+++ b/src/link/MachO/Atom.zig
@@ -119,16 +119,9 @@ pub fn getThunk(self: Atom, macho_file: *MachO) *Thunk {
pub fn initOutputSection(sect: macho.section_64, macho_file: *MachO) !u8 {
const segname, const sectname, const flags = blk: {
- // Sanitize names produced by Zig self-hosted backends.
- // TODO perhaps we simply should emit different names instead?
- const segname = if (mem.indexOf(u8, sect.segName(), "_ZIG")) |idx|
- sect.segName()[0..idx]
- else
- sect.segName();
- const sectname = if (mem.indexOf(u8, sect.sectName(), "_zig")) |idx|
- sect.sectName()[0..idx]
- else
- sect.sectName();
+ const segname = sect.segName();
+ const sectname = sect.sectName();
+
if (sect.isCode()) break :blk .{
"__TEXT",
sectname,
@@ -150,22 +143,19 @@ pub fn initOutputSection(sect: macho.section_64, macho_file: *MachO) !u8 {
macho.S_MOD_INIT_FUNC_POINTERS,
macho.S_MOD_TERM_FUNC_POINTERS,
+ macho.S_LITERAL_POINTERS,
=> break :blk .{ "__DATA_CONST", sectname, sect.flags },
- macho.S_LITERAL_POINTERS,
macho.S_ZEROFILL,
macho.S_GB_ZEROFILL,
macho.S_THREAD_LOCAL_VARIABLES,
macho.S_THREAD_LOCAL_VARIABLE_POINTERS,
macho.S_THREAD_LOCAL_REGULAR,
macho.S_THREAD_LOCAL_ZEROFILL,
- => break :blk .{ segname, sectname, sect.flags },
+ => break :blk .{ "__DATA", sectname, sect.flags },
- macho.S_COALESCED => break :blk .{
- segname,
- sectname,
- macho.S_REGULAR,
- },
+ // TODO: do we need this check here?
+ macho.S_COALESCED => break :blk .{ segname, sectname, macho.S_REGULAR },
macho.S_REGULAR => {
if (mem.eql(u8, segname, "__DATA")) {