1ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao/* 2ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * Copyright 2011, The Android Open Source Project 3ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * 4ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License"); 5ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * you may not use this file except in compliance with the License. 6ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * You may obtain a copy of the License at 7ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * 8ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * http://www.apache.org/licenses/LICENSE-2.0 9ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * 10ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * Unless required by applicable law or agreed to in writing, software 11ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * distributed under the License is distributed on an "AS IS" BASIS, 12ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * See the License for the specific language governing permissions and 14ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao * limitations under the License. 15ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao */ 16ee6cdb95525abc8c7766798148302306a100b774Shih-wei Liao 17981401933fb26be6313bf68a44154a2984aeeb67Logan Chien#ifndef ELF_SECTION_NOBITS_HXX 18981401933fb26be6313bf68a44154a2984aeeb67Logan Chien#define ELF_SECTION_NOBITS_HXX 19981401933fb26be6313bf68a44154a2984aeeb67Logan Chien 20981401933fb26be6313bf68a44154a2984aeeb67Logan Chien#include "ELFTypes.h" 21981401933fb26be6313bf68a44154a2984aeeb67Logan Chien 22981401933fb26be6313bf68a44154a2984aeeb67Logan Chien#include "utils/raw_ostream.h" 23981401933fb26be6313bf68a44154a2984aeeb67Logan Chien 24981401933fb26be6313bf68a44154a2984aeeb67Logan Chien#include <llvm/Support/Format.h> 25981401933fb26be6313bf68a44154a2984aeeb67Logan Chien#include <llvm/Support/raw_ostream.h> 26981401933fb26be6313bf68a44154a2984aeeb67Logan Chien 2774f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien#include <sys/mman.h> 28981401933fb26be6313bf68a44154a2984aeeb67Logan Chien 2974f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chientemplate <unsigned Bitwidth> 3074f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chientemplate <typename Archiver> 3174f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chieninline ELFSectionNoBits<Bitwidth> * 3274f7a939f44d926babd52f59978e6b093e4bb2d0Logan ChienELFSectionNoBits<Bitwidth>::read(Archiver &AR, ELFSectionHeaderTy const *sh) { 3374f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien llvm::OwningPtr<ELFSectionNoBits> result(new ELFSectionNoBits()); 34981401933fb26be6313bf68a44154a2984aeeb67Logan Chien 3574f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien if (!result->chunk.allocate(sh->getSize())) { 3674f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien return NULL; 3774f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien } 38981401933fb26be6313bf68a44154a2984aeeb67Logan Chien 3974f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien result->sh = sh; 40981401933fb26be6313bf68a44154a2984aeeb67Logan Chien 4174f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien return result.take(); 42981401933fb26be6313bf68a44154a2984aeeb67Logan Chien} 43981401933fb26be6313bf68a44154a2984aeeb67Logan Chien 44981401933fb26be6313bf68a44154a2984aeeb67Logan Chien#endif // ELF_SECTION_NOBITS_HXX 45