2017-11-21 2 views
0

__attribute__((section(".dflash_code")))을 주어진 소스 파일의 모든 단일 기능에 복사하여 붙여 넣으 려하지 않습니다.gcc - #pragma를 사용하여 __attribute __ (섹션 ("dflash_code"))) 전체 소스 파일에 적용

#pragma을 사용하여 컴파일러에게 그 속성을 소스 파일의 모든 기능에 적용하도록하는 방법이 있습니까?

+2

어제 요청하셨습니다. 그 이후로 변한 것이 없습니다. –

+0

@EugeneSh. 그 질문은'#pragma'를 사용하는 것을 포함하지 않았습니다 – Adrian

+0

그 질문은 일반적으로 GCC에 관한 것이 었습니다. 이것은 GCC의 특정 #pragma에 관한 것입니다. –

답변

0

소스 코드에서이 작업을 수행 할 수 있다고 생각하지 않지만 오브젝트 파일에 objcopy --rename-section .text=.dflash_code을 사용하면 많은 효과를 얻을 수 있습니다. objcopy을 사용하는 방법에 대한 자세한 내용은 GNU Binutils manual을 참조하십시오.

+0

감사합니다. 또한 링커 명령을 사용하여 작동 시키려고합니다. (하지만 내 시도는 실패합니다.) (https://stackoverflow.com/questions/47399852/gcc-linker-map-all-object-files-in-an-archive- 특정 섹션). 왜 그런지 알고 있니? – Adrian

+1

@Adrian 죄송합니다. 내가 아는 모든 것에 따르면,저기서 시도한 것은 효과가 있어야합니다. 나는 _entire_ 링커 스크립트와 아마도 Makefile 전체와 빌드 환경에 대한 더 많은 세부 사항을 보여 주려하지 않는다면 누구도 당신을 도울 수 없을 것이라고 생각합니다. – zwol

+0

이 좋습니다. 만약 당신의 방법이 효과가 있다면, 그것도 좋을 것입니다. – Adrian

0

어쩌면 함수 선언에서 무언가를 갖는 것을 막을 수는 없겠지만 실제로는 특정 함수 (또는 모두)가 .text 섹션에없는 것을 선호합니다.

#define DFC __attribute__((section(".dflash_code")))

같은 짧고 코드에서 사용할 I 보통 #define 뭔가. 이 함수가 선언문에서 특별한 의미를 지니고 얼마 후에 코드에 올 때 나를 기억합니다.