Erro das ferramentas de vinculador LNK2004
estouro de correção relativa de gp para 'target'; a seção curta 'section' é grande demais ou está fora do intervalo.
A seção era grande demais.
Para resolver esse erro, reduza o tamanho da seção curta, colocando dados explicitamente nas seções longas por meio de #pragma section(".nomedaseção", read, write, long) e usando __declspec(allocate(".sectionname"))
em definições e declarações de dados. Por exemplo,
#pragma section(".data$mylong", read, write, long)
__declspec(allocate(".data$mylong"))
char rg0[1] = { 1 };
char rg1[2] = { 1 };
char rg2[4] = { 1 };
char rg3[8] = { 1 };
char rg4[16] = { 1 };
char rg5[32] = { 1 };
Você também pode mover dados agrupados logicamente para a estrutura deles próprios, que será uma coleção de dados maior que 8 bytes que o compilador alocará em uma seção de dados longa. Por exemplo,
// from this...
int w1 = 23;
int w2 = 46;
int w3 = 23*3;
int w4 = 23*4;
// to this...
struct X {
int w1;
int w2;
int w3;
int w4;
} x = { 23, 23*2, 23*3, 23*4 };
Esse erro é seguido por um erro fatal LNK1165
.