FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
DirectXShaderCompiler/lib/Object/ELFObjectFile.cpp at main · microsoft/DirectXShaderCompiler · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
microsoft
/
DirectXShaderCompiler
Public
Notifications
You must be signed in to change notification settings
Fork
897
Star
3.6k
Code
Issues
654
Pull requests
140
Discussions
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
DirectXShaderCompiler
/
lib
/
Object
/
ELFObjectFile.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
58 lines (50 loc) · 1.86 KB
Breadcrumbs
DirectXShaderCompiler
/
lib
/
Object
/
ELFObjectFile.cpp
Copy path
File metadata and controls
58 lines (50 loc) · 1.86 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//
===- ELFObjectFile.cpp - ELF object file implementation -------*- C++ -*-===//
//
//
The LLVM Compiler Infrastructure
//
//
This file is distributed under the University of Illinois Open Source
//
License. See LICENSE.TXT for details.
//
//
===----------------------------------------------------------------------===//
//
//
Part of the ELFObjectFile class implementation.
//
//
===----------------------------------------------------------------------===//
#
include
"
llvm/Object/ELFObjectFile.h
"
#
include
"
llvm/Support/MathExtras.h
"
namespace
llvm
{
using
namespace
object
;
ELFObjectFileBase::ELFObjectFileBase
(
unsigned
int
Type, MemoryBufferRef Source)
: ObjectFile(Type, Source) {}
ErrorOr<std::unique_ptr<ObjectFile>>
ObjectFile::createELFObjectFile
(MemoryBufferRef Obj) {
std::pair<
unsigned
char
,
unsigned
char
> Ident =
getElfArchType
(Obj.
getBuffer
());
std::
size_t
MaxAlignment =
1ULL
<<
countTrailingZeros
(
uintptr_t
(Obj.
getBufferStart
()));
if
(MaxAlignment <
2
)
return
object_error::parse_failed;
std::error_code
EC
;
std::unique_ptr<ObjectFile> R;
if
(Ident.
first
==
ELF
::
ELFCLASS32
) {
if
(Ident.
second
==
ELF
::
ELFDATA2LSB
)
R.
reset
(
new
ELFObjectFile<ELFType<support::little,
false
>>(Obj,
EC
));
else
if
(Ident.
second
==
ELF
::
ELFDATA2MSB
)
R.
reset
(
new
ELFObjectFile<ELFType<support::big,
false
>>(Obj,
EC
));
else
return
object_error::parse_failed;
}
else
if
(Ident.
first
==
ELF
::
ELFCLASS64
) {
if
(Ident.
second
==
ELF
::
ELFDATA2LSB
)
R.
reset
(
new
ELFObjectFile<ELFType<support::little,
true
>>(Obj,
EC
));
else
if
(Ident.
second
==
ELF
::
ELFDATA2MSB
)
R.
reset
(
new
ELFObjectFile<ELFType<support::big,
true
>>(Obj,
EC
));
else
return
object_error::parse_failed;
}
else
{
return
object_error::parse_failed;
}
if
(
EC
)
return
EC
;
return
std::move
(R);
}
}
//
end namespace llvm
Back
|
FazBrowse Home
|
New Git URL