在 2022/7/30 上午1:17, Xi Ruoyao 写道:
Change v2 to v3: - Disable section anchor for addr_global symbols. - Use -O2 in test to make sure section anchor is disabled. -- Background: https://lore.kernel.org/loongarch/d7670b60-2782-4642-995b-7baa01779...@loongson.cn/T/#e1d47e2fe185f2e2be8fdc0784f0db2f644119379 Question: Do you have a better name than "addr_global"?
I think the name can be changed to "get_through_got".What do you think of it?
Alternatives: 1. Just use "-mno-explicit-relocs -mla-local-with-abs" for kernel modules. It's stupid IMO. 2. Implement a "-maddress-local-with-got" option for GCC and use it for kernel modules. It seems too overkill: we might create many unnecessary GOT entries. 3. For all variables with a section attribute, consider it global. It may make sense, but I just checked x86_64 and riscv and they don't do this. 4. Implement -mcmodel=extreme and use it for kernel modules. To me "extreme" seems really too extreme. 5. More hacks in kernel. (Convert relocations against .data..percpu with objtool? But objtool is not even implemented for LoongArch yet.) Note: I'll be mostly AFK in the following week. My attempt to finish the kernel support for new relocs before going AFK now failed miserably :(. -- >8 -- A linker script and/or a section attribute may locate a local object in some way unexpected by the code model, leading to a link failure. This happens when the Linux kernel loads a module with "local" per-CPU variables. Add an attribute to explicitly mark an variable with the address unlimited by the code model so we would be able to work around such problems.
Others I think are ok.