Changes in / [353aaba:7fca832]
- Files:
-
- 5 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/exception.hfa
r353aaba r7fca832 162 162 // Generate a new type-id value. 163 163 #define _EHM_TYPE_ID_VALUE(exception_name, arguments) \ 164 __attribute__(( section(".gnu.linkonce." "__cfatid_" #exception_name))) \164 __attribute__((cfa_linkonce)) \ 165 165 _EHM_TYPE_ID_TYPE(exception_name) arguments const \ 166 166 _EHM_TYPE_ID_NAME(exception_name) = { \ -
src/CodeGen/module.mk
r353aaba r7fca832 25 25 CodeGen/GenType.cc \ 26 26 CodeGen/GenType.h \ 27 CodeGen/LinkOnce.cc \ 28 CodeGen/LinkOnce.h \ 27 29 CodeGen/OperatorTable.cc \ 28 30 CodeGen/OperatorTable.h \ -
src/InitTweak/InitTweak.cc
r353aaba r7fca832 1216 1216 1217 1217 void addDataSectonAttribute( ObjectDecl * objDecl ) { 1218 Type *strLitT = new PointerType( Type::Qualifiers( ), 1219 new BasicType( Type::Qualifiers( ), BasicType::Char ) ); 1220 std::list< Expression * > attr_params; 1221 attr_params.push_back( 1222 new ConstantExpr( Constant( strLitT, "\".data#\"", std::nullopt ) ) ); 1223 objDecl->attributes.push_back(new Attribute("section", attr_params)); 1218 objDecl->attributes.push_back(new Attribute("section", { 1219 new ConstantExpr( Constant::from_string(".data#") ), 1220 })); 1224 1221 } 1225 1222 1226 1223 void addDataSectionAttribute( ast::ObjectDecl * objDecl ) { 1227 auto strLitT = new ast::PointerType(new ast::BasicType(ast::BasicType::Char)); 1228 objDecl->attributes.push_back(new ast::Attribute("section", {new ast::ConstantExpr(objDecl->location, strLitT, "\".data#\"", std::nullopt)})); 1224 objDecl->attributes.push_back(new ast::Attribute("section", { 1225 ast::ConstantExpr::from_string(objDecl->location, ".data#"), 1226 })); 1229 1227 } 1230 1228 -
src/Virtual/Tables.cc
r353aaba r7fca832 172 172 } 173 173 174 Attribute * linkonce( const std::string & subsection ) {175 const std::string section = ".gnu.linkonce." + subsection;176 return new Attribute( "section", {177 new ConstantExpr( Constant::from_string( section ) ),178 } );179 }180 181 174 ObjectDecl * makeTypeIdInstance( StructInstType const * typeIdType ) { 182 175 assert( typeIdType ); … … 193 186 new AddressExpr( new NameExpr( "__cfatid_exception_t" ) ) 194 187 ) } ), 195 { linkonce( typeid_name) },188 { new Attribute( "cfa_linkonce", {} ) }, 196 189 noFuncSpecifiers 197 190 ); -
src/main.cc
r353aaba r7fca832 37 37 #include "CodeGen/FixNames.h" // for fixNames 38 38 #include "CodeGen/Generate.h" // for generate 39 #include "CodeGen/LinkOnce.h" // for translateLinkOnce 39 40 #include "CodeTools/DeclStats.h" // for printDeclStats 40 41 #include "CodeTools/ResolvProtoDump.h" // for dumpAsResolvProto … … 405 406 PASS( "Box", GenPoly::box( translationUnit ) ); 406 407 408 PASS( "Link-Once", CodeGen::translateLinkOnce( translationUnit ) ); 409 410 // Code has been lowered to C, now we can start generation. 411 407 412 if ( bcodegenp ) { 408 413 dump( translationUnit ); -
tests/Makefile.am
r353aaba r7fca832 67 67 .PHONY: list .validate 68 68 .INTERMEDIATE: .validate .validate.cfa 69 EXTRA_PROGRAMS = avl_test .dummy_hack # build but do not install69 EXTRA_PROGRAMS = avl_test linkonce .dummy_hack # build but do not install 70 70 EXTRA_DIST = test.py \ 71 71 pybin/__init__.py \ … … 94 94 95 95 avl_test_SOURCES = avltree/avl_test.cfa avltree/avl0.cfa avltree/avl1.cfa avltree/avl2.cfa avltree/avl3.cfa avltree/avl4.cfa avltree/avl-private.cfa 96 linkonce_SOURCES = link-once/main.cfa link-once/partner.cfa 96 97 # automake doesn't know we still need C/CPP rules so pretend like we have a C program 97 98 nodist__dummy_hack_SOURCES = .dummy_hack.c .dummy_hackxx.cpp
Note: See TracChangeset
for help on using the changeset viewer.