# 编译器<a name="ZH-CN_TOPIC_0186853090"></a>

## GCC<a name="section814135792710"></a>

GCC 7.3.0 包括了 C、C++、Fortran 的前端，也包括了这些语言的库（如libstdc++、libgcc等），openEuler 1.0 配套编译器为 GCC 7.3.0，并在此基础上进行了特性增强和漏洞修复，其主要更新如下：

**特性增强**

-   针对鲲鹏920的 TaishanV110 核，支持该TaiShan核微架构下的流水线优化
-   支持 softFDO（soft Feedback-Directed Optimization）反馈优化
-   支持 FGO（Feature Guided Optimization）反馈优化
-   支持 AArch64 后端下的长跳转（Long Call）功能
-   支持循环优化 loop unroll and jam，将多层循环中的外层循环展开，并将展开后的多个内层循环合并
-   支持循环优化 loop interchange，将多层循环中的内外层循环进行交换

**漏洞修复**

修复如下GCC安全漏洞

-   修复ARM后端下栈保护功能在特殊场景中能够被黑客绕过保护的安全漏洞（CVE-2018-12886）
-   修复POWER9后端下多次调用\_\_builtin\_darn函数的返回值相同的安全漏洞（CVE-2019-15847）

## OpenJDK<a name="section2068511112811"></a>

JDK（Java Development Kit）是 Java 开发者进行 Java 开发所必须的软件包，包含 JRE（Java Runtime Environment）和编译、调测工具。openEuler 1.0 配套 JDK 为 OpenJDK 8， 并在此基础上进行了 GC 优化、并发稳定性增强、安全性增强等，提高了 Java 应用程序在 ARM 上的性能和稳定性，其主要特性和更新如下：

**特性**

-   兼容Java SE 8 & JDK 8

**特性增强**

-   删除 GC 中冗余的 read/write barrier
-   针对 ARM 弱内存模型进行了稳定性增强

**问题修复**

-   在ARM v8.1上默认禁用UseLSE选项
-   避免了因为没有提前加载ClassLoader.findLibrary和System.loadLibrary而导致的潜在的死锁问题 \(JDK-8231584\)
-   解决了一个容易遇到的javac检查超类时无限递归的bug（\(JDK-8214345）
-   修复了在heapdump时可能遇到的crash问题（JDK-8194246）
-   修复了getCanonicalPath在处理"//"时遇到的crash问题（JDK-8194154）
-   修复了一个AbstractQueuedSynchronizer可能存在的锁竞争问题（JDK-8191483）
-   修复创建一个NTLM连接抛空指针异常的问题（JDK-8151788）
-   DateTimeFormatter支持"yyyyMMddHHmmssSSS"日期格式解析（JDK-8031085）

